package com.android.uu.view;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.HorizontalScrollView;

/**可以水平左右无限无缝滑动的ScrollView
 * 需要自己计算出一个屏幕内需要添加的数据组的数量，以及每个数据组的长度(单位像素px)
 * @author GuiyouZhang
 * Date：2015年12月8日 上午10:33:03
 * Email:guiyouzhang@163.com
 */
public class UUHorizonalScrollView extends HorizontalScrollView {

    private int groupWide = 0;//每一组数据的宽度
	private boolean isChanged = false;//是否进行了处理
	private boolean isFirst = true;//是否是第一次启动
    
    public UUHorizonalScrollView(Context context) {
        super(context);
    }
    public UUHorizonalScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    
    public UUHorizonalScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    
    public void setGroupWide(int groupWide) {
        this.groupWide = groupWide;
    }

    @Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		if (isFirst && groupWide > 0) {
			scrollTo(groupWide, 0);
			isFirst = false;
		}
	}
    
	@Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    	if (isChanged) {
			return;
		}
    	isChanged = true;
		if (groupWide > 0) {// 当scrollview中有数据时
		 if (l < groupWide) {//当水平滑动距离
		 this.scrollTo(groupWide+l, 0);
		 }else if (l > groupWide*2) {
		 this.scrollTo(l-groupWide, 0);
		 }
//			if (l < groupWide) {// 当水平滑动距离小于一组数据的长度时，不做处理
//				
//			} else if (l > groupWide && l < groupWide*2) {//如果滑出了第二组数据的长度，但是没超过第三组
//				this.scrollTo(groupWide+l, 0);
//			} else if (l > groupWide * 2) {
//				this.scrollTo(l - groupWide, 0);
//			}
		}
    	isChanged = false;
        super.onScrollChanged(l, t, oldl, oldt);
    }

    public interface UUScrollViewListener {
        void onScrollChanged(UUHorizonalScrollView scrollView, int x, int y, int oldx, int oldy);  
    }
    
}
